Elixir をやってきた者が Scala を暫くやってみて同じ所と違ふ所を舉げる
同じ
函數型言語
OTP or Akka
Scala.jsScala.icon、ElixirScriptElixir.icon
ScalaScala.icon には ScalaNativeScala.icon も有る Erlang on XenErlang.icon
Unikernel
dead
active
active
immutable data
JavaJava.icon の世界に踏み出さなければ 他に似たもの
函數型言語
標準 library
主に read なら使へる
core.async は π計算
core.* はほぼ標準 library (と云ふ事にしてくれ)
channel に內部構造を持たせられる
immutable data
clojure.spec/core.typed で型注釋を附けて靜的検査は出來る。表現力は低い
actor に型が附く
immutable data
型の表現力は低い
native compile
mutable data
型の表現力は低い
native compile
違ひ
ScalaScala.icon : 表現力の高い型 system 「型安全」といふ言葉を使ふな。C、C++ 以外のよく見る殆どの言語は型安全だ だうやって型安全性を實現するか
compile 時、實行時
名が型を持つか否か
型 system の表現力
ElixirElixir.icon は @spec と Dialyzer の success typing ScalaScala.icon は H-M ではないのだなぁと知ってはゐるけど H-M だと思って暮らしてゐる ElixirElixir.icon : VM level の parallelism support & 強制 ScalaScala.icon は根本的な support が無いが強制されない 竝列性の實現法が色々有るの便利
Akka
syncronized & volatile
JavaJava.icon の thread safe な class ScalaSMT
但し ETS、DETS や persistent_term で同等のものを作れる
適當に Future を投げてはいけない
await しないECMAScriptECMAScript.icon の Promise と同じ。組織しませう ErlangErlang.icon の Application 便利だった。必ず有るから ElixirElixir.icon : VM level の distribution support & 強制 ScalaScala.icon は根本的な support が無いが強制されない Akka
いつなんどきでも cluster が使へると云ふ安心感は ScalaScala.icon には無い Akka が常に有るので、そうでもない
1,000~10,000 台の cluster (工夫無しに) 作りたいですね→KubernetesKubernetes.icon でやれ ElixirElixir.icon : 非線形な pattern match EgisonEgison.iconみたいに正規形を持たない data に對しては、出來ない ScalaScala.icon は unapply を擴張して出來る。unapply 使へば何でも出來るよ 非線形な match は、match を使ふ側ではなくて unapply に閉じ込めなければなりませんが
ScalaScala.icon : OOP (JavaJava.icon と話すと基本的に OOP に成る) implicit
型 class べんりー
ElixirElixir.iconには型が無いので…型 class も無い simulate する事に成る…
implicit は DI ではない
ElixirElixir.icon にも有りませんが…そんな話ししたな ScalaScala.icon : GPU、SIMD